package 数组;

public class LC_209长度最小的子数组 {
    public static void main(String[] args){
        int target=11;
        int[] nums={1,1,1,1,1,1,1,1};
        System.out.println(minSubArrayLen(target,nums));
    }
    //滑动窗口
    public static int minSubArrayLen(int target, int[] nums) {
        int result=Integer.MAX_VALUE;
        int sum=0,i=0,subl=0;//sum为长度中元素相加之和
        //subl为长度大小，i为起点
        for(int j=0;j<nums.length;j++){//j表示终点
            sum+=nums[j];
            while(sum>=target){//注意等号
                subl=j-i+1;//长度大小
                if(result>subl){
                    result=subl;//找最小长度
                }
                sum-=nums[i];
                i++;
            }
        }
        if(result==Integer.MAX_VALUE){
            return 0;
        }
        else{
            return result;
        }
    }
}
